package com.lightjet.macross.base.upms.service;

import com.lightjet.macross.base.upms.domain.RoleInfo;
import com.lightjet.macross.base.upms.domain.RoleUserLink;
import com.lightjet.macross.base.upms.domain.SysUser;
import com.lightjet.macross.base.upms.domain.SystemInfo;
import com.lightjet.macross.common.core.BaseService;
import com.lightjet.macross.common.dto.ResponseDTO;

import java.util.List;

public interface RoleUserLinkService extends BaseService<RoleUserLink,Integer> {

    //获取某个用户在某个系统中的所有角色关系
    List<RoleUserLink> FindByBelongsystemAndUserkey(SystemInfo systemInfo, String userkey);

    //获取某个用户在某个系统中的所有角色关系(如果有任何人角色的话会自动附加)
    List<RoleInfo> FindBySystemAndUserWithAnybody(SystemInfo systemInfo, String userkey);

    //根据系统短名、部门ID、角色代码或角色名称 获取人员集合
    List<SysUser> FindBySystemAndDeptAndRole(String ssname, Integer deptid, String rolecode, String rolename);

    List<RoleInfo> FindBySystemShortNameAndUserKey(String systemshortname,String userkey);

    /**
     * Description //是否已赋予用户某角色
     * @author lijia
     * @Param roleInfo 角色对象
     * @param userkey 用户ID
     * @return boolean
     * CreateTime 2020/3/7 11:32
     **/
    boolean HasGranted(RoleInfo roleInfo,String userkey);

    /**
     * Description //批量赋予用户某个角色
     * @author lijia
     * @Param roleInfo 角色对象
     * @param users 用户列表
     * @return com.lightjet.macross.common.dto.ResponseDTO<java.lang.String>
     * CreateTime 2020/3/7 11:21
     **/
    ResponseDTO<String> GrantRoleToUsers(RoleInfo roleInfo,List<String> users);

    /**
     * Description //批量撤回用户某个角色
     * @author lijia
     * @Param roleInfo 角色对象
     * @param users    用户列表
     * @return com.lightjet.macross.common.dto.ResponseDTO<java.lang.String>
     * CreateTime 2020/3/7 11:21
     **/
    ResponseDTO<String> RevokeRoleToUsers(RoleInfo roleInfo, List<String> users);

    /**
     * Description // 根据角色对象获取角色与用户关系集合
     * @author lijia
     * @Param roleInfo 角色对象
     * @return com.lightjet.macross.common.dto.ResponseDTO<java.lang.String>
     * CreateTime 2020/3/14 11:21
     **/
    List<RoleUserLink> FindByRoleinfo(RoleInfo roleInfo);

}
